﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Globalization;
using DataAccessComponents;
using BusinessLogicLayer;
using System.Collections.ObjectModel;

namespace inzDesktop
{
    /// <summary>
    /// Interaction logic for windowDodajKlienta.xaml
    /// </summary>
    public partial class windowDodajKlienta : Window
    {
       
        public windowDodajKlienta()
        {
            InitializeComponent();
            
        }
        public Klient Klient { get; set; }
        // Id status potrzebne do dodania odpowiedniego statusu przy rezerwacji
        public Status Status { get; set; }

        public void inicjalizujZawartosc(bool bezRezerwujacego)
        {
            string[] wojewodztwa = {"mazowieckie","podlaskie","warmińsko-mazurskie","pomorskie","kujwsko-pomorskie","lubuskie",
                                       "opolskie","świętokrzyskie","wielkopolskie","dolnośląskie","podkarpackie","małopolskie","lubelskie","zachodnio-pomorskie","łódzkie"
                                   };
            cbWojewodztwo.ItemsSource = wojewodztwa;

            string[] plec = { "kobieta", "mężczyzna" };

            cbPlec.ItemsSource = plec;

            StatusBL statusBL = new StatusBL();
            
            ObservableCollection<Status> lista = statusBL.pobierzListe(bezRezerwujacego);
            cbStatus.ItemsSource = lista;

            Klient klient = new Klient();

            // Przekazywanie kontekstu o kliencie
            this.DataContext = klient;      
        }

       

        private void btnOK_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridDodajKlient))
            {
                MessageBoxResult wynik = System.Windows.MessageBox.Show("Czy chcesz dodać nowego klienta?", "Uwaga!", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (wynik == MessageBoxResult.Yes)
                {
                    if (zapiszZmianyKlient() == true)
                    {
                        DialogResult = true;
                    }
                }
                else if (wynik == MessageBoxResult.No)
                {
                    DialogResult = false;
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
            
        }

        private bool zapiszZmianyKlient()
        {
            KlientBL klientBL = new KlientBL();
            this.Klient = (Klient)this.DataContext;

            if (klientBL.sprawdzCzyIstnieje(this.Klient) == 0)
            {
                this.Klient.Id_klient = klientBL.dodaj(this.Klient);
                return true;
            }
            else { 
                MessageBox.Show("Dany klient już istnieje w bazie danych", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);
                return false;
            }

        }

        private void btnAnuluj_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void dpDataUrodzenia_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void cbStatus_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            if (cbStatus.SelectedItem != null)
            {
                this.Status = cbStatus.SelectedItem as Status;
            }
        }
    //}

    //public class EnumMatchToBooleanConverter : IValueConverter
    //{
    //    public object Convert(object value, Type targetType,
    //        object parameter, CultureInfo culture)
    //    {

    //        if (value == null || parameter == null)
    //            return false;
    //        string checkValue = value.ToString();
    //        string targetValue = parameter.ToString();
    //        return checkValue.Equals(targetValue, StringComparison.InvariantCultureIgnoreCase);
    //    }
    //    public object ConvertBack(object value, Type targetType,
    //        object parameter, CultureInfo culture)
    //    {

    //        if (value == null || parameter == null)
    //            return null;

    //        bool useValue = (bool)value;
    //        string targetValue = parameter.ToString();

    //        if (useValue)
    //            return Boolean.Parse(targetValue);

    //        return null;
    //    }
     
    }
}
